//
//  NSDate.swift
//  testDate
//
//  Created by 唐后能 on 16/4/18.
//  Copyright © 2016年 itheima. All rights reserved.
//
import UIKit

extension NSDate {

    // 将字符串转成带格式的时间.
    class func date(sinaString:String)->NSDate{
    
        let dateF = NSDateFormatter()
        dateF.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
        // 真机需要指定
        dateF.locale = NSLocale(localeIdentifier: "EN")
        return dateF.dateFromString(sinaString) ??  NSDate()
    }
    
    // 将NSDate对象转成新浪要求的格式字符串.
    ///     格式如下
    ///     -   刚刚(一分钟内)
    ///     -   X分钟前(一小时内)
    ///     -   X小时前(当天)
    ///     -   昨天 HH:mm(昨天)
    ///     -   MM-dd HH:mm(一年内)
    ///     -   yyyy-MM-dd HH:mm(更早期)
    func sinaDateDescription () -> String {
    
        // 获取时间日历.-->是一个单例,专门用来处理时间的.
        let calendar = NSCalendar.currentCalendar()
        
        // 如果当前的时间date对象为当天.
        if calendar.isDateInToday(self){
        
            // 获取新浪时间和当前系统的时间差.
            let dateDifrent = Int( NSDate().timeIntervalSinceDate(self) )
            // 一分钟内.
            if dateDifrent < 60 {
            
                return "刚刚"
            }
            
            // 一小时内.
            if dateDifrent < 60*60 {
                
                return "\(dateDifrent/60)分钟前"
            }
            
            // 其它 X小时内
            return "\(dateDifrent/60/60)小时前"
            
        }
        
        // 其它情况,需要用日期格式.
        
        var dateF = ""
        if calendar.isDateInYesterday(self) { //昨天.
        
//            print("昨天")
            dateF = "昨天 HH:mm"
        }else if calendar.compareDate(self, toDate: NSDate(), toUnitGranularity: NSCalendarUnit.Year) == NSComparisonResult.OrderedSame {
        
//            print("一年内")
            dateF = "MM-dd HH:mm"
        }else {
        
//            print("更早期")
            dateF = "yyyy-MM-dd HH:mm"
        }
        
        let df = NSDateFormatter()
        df.dateFormat = dateF
        return df.stringFromDate(self)
    }
    
    
}